A server can be used to allocate software licenses to other entities in a network. These network entities, such as clients, can request the allocation of software licenses as physical machines, or virtual machines (VMs).
In a virtualized environment, VM sprawl is a common scenario. With VM sprawl, it can be cumbersome for an administrator to track the usage of software licenses, since the server that allocates licenses may not be aware of VM life cycle events. For example, a VM may be cloned, with the original VM and the cloned VM continuing to operate using a single license, even though two sets of software are now operating as part of two different VMs. Thus, maintaining license usage within the total allocated usage as part of this scenario can be difficult. Further, VMs may be destroyed without the knowledge of the server, so that licenses allocated to a destroyed VM can remain allocated long past the time they are actually needed. Therefore, efficiently allocating licenses in a virtual environment can also be a challenge.